[XENBUS] Allow user of xenbus_read_driver_state() to distinguish
authorkaf24@localhost.localdomain <kaf24@localhost.localdomain>
Sat, 19 Aug 2006 13:28:10 +0000 (14:28 +0100)
committerkaf24@localhost.localdomain <kaf24@localhost.localdomain>
Sat, 19 Aug 2006 13:28:10 +0000 (14:28 +0100)
absence of state field in xenstore by returning XenbusStateUnknown
rather than XenbusStateClosed.
Signed-off-by: Keir Fraser <keir@xensource.com>
linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c
linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c
linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c
linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c
linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c
linux-2.6-xen-sparse/drivers/xen/pciback/xenbus.c
linux-2.6-xen-sparse/drivers/xen/pcifront/xenbus.c
linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c
linux-2.6-xen-sparse/include/xen/xenbus.h

index 68079cb56a00a910f115425c460e63ef563f3418..71c7dd3a00749ed4ec4b15fdd3827e1bc9d2b78f 100644 (file)
@@ -343,7 +343,6 @@ static void backend_changed(struct xenbus_device *dev,
        case XenbusStateInitialising:
        case XenbusStateInitWait:
        case XenbusStateInitialised:
-       case XenbusStateUnknown:
                break;
 
        case XenbusStateConnected:
@@ -354,10 +353,10 @@ static void backend_changed(struct xenbus_device *dev,
                tpmif_set_connected_state(tp, 0);
                break;
 
+       case XenbusStateUnknown:
        case XenbusStateClosed:
-               if (tp->is_suspended == 0) {
+               if (tp->is_suspended == 0)
                        device_unregister(&dev->dev);
-               }
                xenbus_switch_state(dev, XenbusStateClosed);
                break;
        }
index 0f268c9e33ad2fa2866e6403ad6fd48ccdc60c0c..931f7bf4bc447310c7f233127109c37680180284 100644 (file)
@@ -331,12 +331,11 @@ static void frontend_changed(struct xenbus_device *dev,
                xenbus_switch_state(dev, XenbusStateClosing);
                break;
 
+       case XenbusStateUnknown:
        case XenbusStateClosed:
                device_unregister(&dev->dev);
                break;
 
-       case XenbusStateUnknown:
-       case XenbusStateInitWait:
        default:
                xenbus_dev_fatal(dev, -EINVAL, "saw state %d at frontend",
                                 frontend_state);
index bee1da5ff5367367625d1b0dc356f7096b8c4fcf..9f180fd01fe9beb2cc0578ce34828e4f7c8e41df 100644 (file)
@@ -256,10 +256,10 @@ static void backend_changed(struct xenbus_device *dev,
        DPRINTK("blkfront:backend_changed.\n");
 
        switch (backend_state) {
-       case XenbusStateUnknown:
        case XenbusStateInitialising:
        case XenbusStateInitWait:
        case XenbusStateInitialised:
+       case XenbusStateUnknown:
        case XenbusStateClosed:
                break;
 
index 1b901f5b0c8056ceaa53c19365e6121080d9680a..e0158592cf0d483e4a3812e75acde7c7e726d64a 100644 (file)
@@ -267,12 +267,11 @@ static void tap_frontend_changed(struct xenbus_device *dev,
                xenbus_switch_state(dev, XenbusStateClosing);
                break;
 
+       case XenbusStateUnknown:
        case XenbusStateClosed:
                device_unregister(&dev->dev);
                break;
 
-       case XenbusStateUnknown:
-       case XenbusStateInitWait:
        default:
                xenbus_dev_fatal(dev, -EINVAL, "saw state %d at frontend",
                                 frontend_state);
index a0e396123423a31a93f02e098ff78e0e63a23e62..9da8e3b4be8d25ffde7cc304052cffdbc9485fc4 100644 (file)
@@ -260,14 +260,13 @@ static void frontend_changed(struct xenbus_device *dev,
                xenbus_switch_state(dev, XenbusStateClosing);
                break;
 
+       case XenbusStateUnknown:
        case XenbusStateClosed:
                if (be->netif != NULL)
                        kobject_uevent(&dev->dev.kobj, KOBJ_OFFLINE);
                device_unregister(&dev->dev);
                break;
 
-       case XenbusStateUnknown:
-       case XenbusStateInitWait:
        default:
                xenbus_dev_fatal(dev, -EINVAL, "saw state %d at frontend",
                                 frontend_state);
index 86223a35ec8d977eb057f7c05c2c6a0292d58d0b..0026753381a521c3433e33520ce1cd5ed56343dc 100644 (file)
@@ -181,6 +181,7 @@ static void pciback_frontend_changed(struct xenbus_device *xdev,
                xenbus_switch_state(xdev, XenbusStateClosing);
                break;
 
+       case XenbusStateUnknown:
        case XenbusStateClosed:
                dev_dbg(&xdev->dev, "frontend is gone! unregister device\n");
                device_unregister(&xdev->dev);
index 4fd9262f9d863e0a4940d76118f0d9861384a3c3..c5fca76cf92b5ae670bf8d5aecc967923a2e1d97 100644 (file)
@@ -225,6 +225,7 @@ static void pcifront_backend_changed(struct xenbus_device *xdev,
                pcifront_try_disconnect(pdev);
                break;
 
+       case XenbusStateUnknown:
        case XenbusStateClosed:
                dev_warn(&xdev->dev, "backend went away!\n");
                pcifront_try_disconnect(pdev);
index cb72a2ec364788b0bd30414ba15efa648c9f96a5..4ee5c5bbfe0d63facc0a8dab95fce40213ea6cfd 100644 (file)
@@ -34,7 +34,6 @@ struct backend_info
 
        /* watch front end for changes */
        struct xenbus_watch backend_watch;
-       enum xenbus_state frontend_state;
 };
 
 static void maybe_connect(struct backend_info *be);
@@ -143,8 +142,6 @@ static void frontend_changed(struct xenbus_device *dev,
        struct backend_info *be = dev->dev.driver_data;
        int err;
 
-       be->frontend_state = frontend_state;
-
        switch (frontend_state) {
        case XenbusStateInitialising:
        case XenbusStateInitialised:
@@ -162,13 +159,12 @@ static void frontend_changed(struct xenbus_device *dev,
                be->instance = -1;
                break;
 
+       case XenbusStateUnknown:
        case XenbusStateClosed:
                device_unregister(&be->dev->dev);
                tpmback_remove(dev);
                break;
 
-       case XenbusStateUnknown:
-       case XenbusStateInitWait:
        default:
                xenbus_dev_fatal(dev, -EINVAL,
                                 "saw state %d at frontend",
index 24661a861b98eb081e81bfb8a2b5f634277e0ad6..97505ae459ce38ff05f45d2ba67a210a01a03e35 100644 (file)
@@ -274,7 +274,7 @@ enum xenbus_state xenbus_read_driver_state(const char *path)
        enum xenbus_state result;
        int err = xenbus_gather(XBT_NIL, path, "state", "%d", &result, NULL);
        if (err)
-               result = XenbusStateClosed;
+               result = XenbusStateUnknown;
 
        return result;
 }
index af36ef614b9fae3e3656a61c8a9c1d48c48e8fbb..909900f650daae73134b3bebd56c80e5541a304a 100644 (file)
@@ -274,7 +274,7 @@ int xenbus_free_evtchn(struct xenbus_device *dev, int port);
 
 /**
  * Return the state of the driver rooted at the given store path, or
- * XenbusStateClosed if no state can be read.
+ * XenbusStateUnknown if no state can be read.
  */
 enum xenbus_state xenbus_read_driver_state(const char *path);